all: drop CER_ID
authorPaul Donald <[email protected]>
Tue, 11 Nov 2025 14:09:26 +0000 (15:09 +0100)
committerÁlvaro Fernández Rojas <[email protected]>
Thu, 13 Nov 2025 12:36:00 +0000 (13:36 +0100)
We have removed it from odhcpd since this never saw adoption. Remove here also.

Signed-off-by: Paul Donald <[email protected]>
Link: https://github.com/openwrt/odhcp6c/pull/118
Signed-off-by: Álvaro Fernández Rojas <[email protected]>
CMakeLists.txt
README.md
src/dhcpv6.c
src/odhcp6c.c
src/odhcp6c.h
src/script.c
src/ubus.c

index fc60a84b6671716b677b2d17d05ecbf22e02551f..90678190a628674f28e514f65d5e297788238cff 100644 (file)
@@ -38,12 +38,6 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${ubox_include_dir})
 find_library(libubox ubox)
 target_link_libraries(${PROJECT_NAME} PRIVATE ${libubox})
 
-
-# Optional Features
-if (${EXT_CER_ID})
-       target_compile_definitions(${PROJECT_NAME} PRIVATE EXT_CER_ID=${EXT_CER_ID})
-endif(${EXT_CER_ID})
-
 if(${UBUS})
        target_compile_definitions(${PROJECT_NAME} PRIVATE WITH_UBUS)
        target_sources(${PROJECT_NAME} PRIVATE src/ubus.c)
index e49ca4e0d9a0a477b349cfb1ca989286c6ee34f4..5397cea5b4e344f777d339d290f65c824ffd1f87 100644 (file)
--- a/README.md
+++ b/README.md
@@ -29,7 +29,6 @@ especially routers.
        * Configurable SOL_MAX_RT
        * DS-Lite AFTR-Name Option
        * Softwire address and port mapped clients (MAP, LW4over6)
-       * CER-ID (experimental)
        * Server unicast Option
 
 4. Support for requesting and parsing Router Advertisements
@@ -89,7 +88,6 @@ The script is called with the following parameters: `<interface>` `<state>`
 | `RA_REACHABLE`                                       | ND Reachability time                                                                                          |
 | `RA_RETRANSMIT`                                      | ND Retransmit time                                                                                            |
 | `AFTR`                                                       | The DS-Lite AFTR domain name                                                                          |
-| `CER`                                                                | A space-separated list of CER-id IPv6                                                         |
 | `MAPE` / `MAPT` / `LW4O6`            | Softwire rules for MAPE, MAPT and LW4O6                                                       |
 | `PASSTHRU`                                           | The content of the last packet relayed                                                        |
 
index a6be11966391ca025b8efad1a12d6872f8149c1d..f8e75e86d6cd43edee4652615186ca9848ed143c 100644 (file)
@@ -617,9 +617,6 @@ int init_dhcpv6(const char *ifname)
                        htons(DHCPV6_OPT_SNTP_SERVERS),
                        htons(DHCPV6_OPT_NTP_SERVER),
                        htons(DHCPV6_OPT_PD_EXCLUDE),
-#ifdef EXT_CER_ID
-                       htons(DHCPV6_OPT_CER_ID),
-#endif
                };
                odhcp6c_add_state(STATE_ORO, oro, sizeof(oro));
        }
@@ -1342,7 +1339,6 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _o_unused const int rc,
                odhcp6c_clear_state(STATE_SIP_IP);
                odhcp6c_clear_state(STATE_SIP_FQDN);
                odhcp6c_clear_state(STATE_AFTR_NAME);
-               odhcp6c_clear_state(STATE_CER);
                odhcp6c_clear_state(STATE_S46_MAPT);
                odhcp6c_clear_state(STATE_S46_MAPE);
                odhcp6c_clear_state(STATE_S46_LW);
@@ -1455,14 +1451,6 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _o_unused const int rc,
                                if (inf_max_rt >= DHCPV6_INF_MAX_RT_MIN &&
                                                inf_max_rt <= DHCPV6_INF_MAX_RT_MAX)
                                        dhcpv6_retx[DHCPV6_MSG_INFO_REQ].max_timeo = inf_max_rt;
-       #ifdef EXT_CER_ID
-                       } else if (otype == DHCPV6_OPT_CER_ID && olen == -4 +
-                                       sizeof(struct dhcpv6_cer_id)) {
-                               struct dhcpv6_cer_id *cer_id = (void*)&odata[-4];
-                               struct in6_addr any = IN6ADDR_ANY_INIT;
-                               if (memcmp(&cer_id->addr, &any, sizeof(any)))
-                                       odhcp6c_add_state(STATE_CER, &cer_id->addr, sizeof(any));
-       #endif
                        } else if (otype == DHCPV6_OPT_S46_CONT_MAPT) {
                                odhcp6c_add_state(STATE_S46_MAPT, odata, olen);
                        } else if (otype == DHCPV6_OPT_S46_CONT_MAPE) {
index 58da874c2eefd142d710900b214e59aa66097119..54549bd2e71454babfbbb26c5b686ff911f57a92 100644 (file)
@@ -116,9 +116,6 @@ static struct odhcp6c_opt opts[] = {
        { .code = DHCPV6_OPT_RADIUS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_SOL_MAX_RT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO | OPT_ORO_SOLICIT, .str = NULL },
        { .code = DHCPV6_OPT_INF_MAX_RT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO | OPT_ORO_STATELESS, .str = NULL },
-#ifdef EXT_CER_ID
-       { .code = DHCPV6_OPT_CER_ID, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
-#endif
        { .code = DHCPV6_OPT_DHCPV4_MSG, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_S46_RULE, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_S46_BR, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
index 858bb6f697dabb2905d2ad19f27bebb86e84f380..98761723f4142e2af3deebc50833bd9fc521260d 100644 (file)
@@ -106,10 +106,6 @@ enum dhcvp6_opt {
        DHCPV6_OPT_RADIUS = 81,
        DHCPV6_OPT_SOL_MAX_RT = 82,
        DHCPV6_OPT_INF_MAX_RT = 83,
-#ifdef EXT_CER_ID
-       /* draft-donley-dhc-cer-id-option-03 */
-       DHCPV6_OPT_CER_ID = EXT_CER_ID,
-#endif
        DHCPV6_OPT_DHCPV4_MSG = 87,
        /* RFC 7598 */
        DHCPV6_OPT_S46_RULE = 89,
@@ -297,12 +293,6 @@ struct dhcpv6_auth_reconfigure {
        uint8_t key[16];
 } _o_packed;
 
-struct dhcpv6_cer_id {
-       uint16_t type;
-       uint16_t len;
-       struct in6_addr addr;
-} _o_packed;
-
 struct dhcpv6_s46_portparams {
        uint8_t offset;
        uint8_t psid_len;
@@ -390,7 +380,6 @@ enum odhcp6c_state {
        STATE_RA_SEARCH,
        STATE_AFTR_NAME,
        STATE_OPTS,
-       STATE_CER,
        STATE_S46_MAPT,
        STATE_S46_MAPE,
        STATE_S46_LW,
index fba4cde98f16504ed1947c871a6eafc0222a9493..131d70da5445ebeb010ba78dd553c93871858466 100644 (file)
@@ -435,7 +435,7 @@ void script_call(const char *status, int delay, bool resume)
 
        } else if (pid == 0) {
                size_t dns_len, search_len, custom_len, sntp_ip_len, ntp_ip_len, ntp_dns_len;
-               size_t sip_ip_len, sip_fqdn_len, aftr_name_len, cer_len, addr_len;
+               size_t sip_ip_len, sip_fqdn_len, aftr_name_len, addr_len;
                size_t s46_mapt_len, s46_mape_len, s46_lw_len, passthru_len;
 
                signal(SIGTERM, SIG_DFL);
@@ -454,7 +454,6 @@ void script_call(const char *status, int delay, bool resume)
                struct in6_addr *sip = odhcp6c_get_state(STATE_SIP_IP, &sip_ip_len);
                uint8_t *sip_fqdn = odhcp6c_get_state(STATE_SIP_FQDN, &sip_fqdn_len);
                uint8_t *aftr_name = odhcp6c_get_state(STATE_AFTR_NAME, &aftr_name_len);
-               struct in6_addr *cer = odhcp6c_get_state(STATE_CER, &cer_len);
                uint8_t *s46_mapt = odhcp6c_get_state(STATE_S46_MAPT, &s46_mapt_len);
                uint8_t *s46_mape = odhcp6c_get_state(STATE_S46_MAPE, &s46_mape_len);
                uint8_t *s46_lw = odhcp6c_get_state(STATE_S46_LW, &s46_lw_len);
@@ -478,7 +477,6 @@ void script_call(const char *status, int delay, bool resume)
                fqdn_to_env("DOMAINS", search, search_len);
                fqdn_to_env("SIP_DOMAIN", sip_fqdn, sip_fqdn_len);
                fqdn_to_env("AFTR", aftr_name, aftr_name_len);
-               ipv6_to_env("CER", cer, cer_len / sizeof(*cer));
                s46_to_env(STATE_S46_MAPE, s46_mape, s46_mape_len);
                s46_to_env(STATE_S46_MAPT, s46_mapt, s46_mapt_len);
                s46_to_env(STATE_S46_LW, s46_lw, s46_lw_len);
index 4e127ca5c63672d446a3320a202489f2ea6dee90..0b37ddfb377054e373a689f95c2d1549d420987b 100644 (file)
@@ -530,7 +530,7 @@ static int states_to_blob(void)
 {
        char *buf = NULL;
        size_t dns_len, search_len, custom_len, sntp_ip_len, ntp_ip_len, ntp_dns_len;
-       size_t sip_ip_len, sip_fqdn_len, aftr_name_len, cer_len, addr_len;
+       size_t sip_ip_len, sip_fqdn_len, aftr_name_len, addr_len;
        size_t s46_mapt_len, s46_mape_len, s46_lw_len, passthru_len;
        struct in6_addr *addr = odhcp6c_get_state(STATE_SERVER_ADDR, &addr_len);
        struct in6_addr *dns = odhcp6c_get_state(STATE_DNS, &dns_len);
@@ -542,7 +542,6 @@ static int states_to_blob(void)
        struct in6_addr *sip = odhcp6c_get_state(STATE_SIP_IP, &sip_ip_len);
        uint8_t *sip_fqdn = odhcp6c_get_state(STATE_SIP_FQDN, &sip_fqdn_len);
        uint8_t *aftr_name = odhcp6c_get_state(STATE_AFTR_NAME, &aftr_name_len);
-       struct in6_addr *cer = odhcp6c_get_state(STATE_CER, &cer_len);
        uint8_t *s46_mapt = odhcp6c_get_state(STATE_S46_MAPT, &s46_mapt_len);
        uint8_t *s46_mape = odhcp6c_get_state(STATE_S46_MAPE, &s46_mape_len);
        uint8_t *s46_lw = odhcp6c_get_state(STATE_S46_LW, &s46_lw_len);
@@ -570,7 +569,6 @@ static int states_to_blob(void)
        CHECK(fqdn_to_blob("DOMAINS", search, search_len));
        CHECK(fqdn_to_blob("SIP_DOMAIN", sip_fqdn, sip_fqdn_len));
        CHECK(fqdn_to_blob("AFTR", aftr_name, aftr_name_len));
-       CHECK(ipv6_to_blob("CER", cer, cer_len / sizeof(*cer)));
        CHECK(s46_to_blob(STATE_S46_MAPE, s46_mape, s46_mape_len));
        CHECK(s46_to_blob(STATE_S46_MAPT, s46_mapt, s46_mapt_len));
        CHECK(s46_to_blob(STATE_S46_LW, s46_lw, s46_lw_len));